package cn.itcast.lesson04;

import java.lang.reflect.Field;

import org.junit.Test;


/**
 * 反射中： java.lang.reflect.Field的用法
 */
public class ChangeValue {
	
	
	/**
	 * 得到某个属性的值 public 
	 */
	@Test
	public void getField() throws Exception{
		PointEntity entity = new PointEntity();
		//getDeclaredField得到private的属性   只要是声明过的 管你可见还是不可见
		Field[] fs= entity.getClass().getDeclaredFields();
		for (Field f : fs) {
			//得到字段的类型   因为是同1份字节码
			if(f.getType() == String.class){
				//setAccessible 用来设置可以访问类的私有属性  暴力反射
				f.setAccessible(true);
				String oldValue = (String) f.get(entity);
				String newValue = oldValue.replace('b', 'a');
				f.set(entity,newValue);
			}
		}
		System.out.println(entity);
	}

}
